package hello;

/**
 * Created with IntelliJIDEA.
 * Description:
 * User: ASUS
 * Date: 2025/8/30
 * Time: 17:32
 */
import java.util.Arrays;

public class SearchExample {
    // 二分查找算法实现
    public static int binarySearch(int[] sortedArray, int target) {
        int low = 0; // 搜索范围起点
        int high = sortedArray.length - 1; // 搜索范围终点

        // 循环直到搜索范围有效
        while (low <= high) {
            // 计算中点（避免整数溢出）
            int mid = low + (high - low) / 2;

            if (sortedArray[mid] < target) {
                low = mid + 1; // 目标在右半区
            } else if (sortedArray[mid] > target) {
                high = mid - 1; // 目标在左半区
            } else {
                return mid; // 找到目标返回索引
            }
        }
        return -1; // 未找到返回-1
    }

    public static void main(String[] args) {
        // 有序数组（二分查找前提）
        int[] arr = {11, 23, 35, 48, 59, 62, 74, 85, 99};

        // 使用Java内置方法查找
        int index1 = Arrays.binarySearch(arr, 62);
        System.out.println("内置方法查找 62 的索引: " + index1); // 输出: 5

        // 使用自定义方法查找
        int index2 = binarySearch(arr, 62);
        System.out.println("自定义方法查找 62 的索引: " + index2); // 输出: 5
    }
}

